{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "meeting_a is in room_b from 9:00\n",
      "meeting_b is in room_a from 10:00\n",
      "meeting_c is in room_b from 16:00\n",
      "meeting_d is in room_b from 8:00\n",
      "meeting_e is in room_b from 11:00\n",
      "meeting_f is in room_a from 16:00\n",
      "meeting_g is in room_b from 14:00\n"
     ]
    }
   ],
   "source": [
    "from ortools.sat.python import cp_model\n",
    "import matplotlib.pyplot as plt\n",
    "from collections import namedtuple\n",
    "\n",
    "\n",
    "# Function to convert time to index\n",
    "def t_to_idx(hour, minute):\n",
    "    return (hour - 8) * 12 + minute // 5\n",
    "\n",
    "\n",
    "# Define a namedtuple for start times and durations\n",
    "MeetingInfo = namedtuple(\"MeetingInfo\", [\"start_times\", \"duration\"])\n",
    "\n",
    "# Possible start times for meetings\n",
    "meetings = {\n",
    "    \"meeting_a\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=8, minute=0), t_to_idx(hour=12, minute=0)],\n",
    "            [t_to_idx(hour=16, minute=0), t_to_idx(hour=17, minute=0)],\n",
    "        ],\n",
    "        duration=24,  # 2 hours\n",
    "    ),\n",
    "    \"meeting_b\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=10, minute=0), t_to_idx(hour=12, minute=0)],\n",
    "        ],\n",
    "        duration=6 * 12,  # 6 hours\n",
    "    ),\n",
    "    \"meeting_c\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=16, minute=0), t_to_idx(hour=17, minute=0)],\n",
    "        ],\n",
    "        duration=6,  # 30 minutes\n",
    "    ),\n",
    "    \"meeting_d\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=8, minute=0), t_to_idx(hour=10, minute=0)],\n",
    "            [t_to_idx(hour=12, minute=0), t_to_idx(hour=14, minute=0)],\n",
    "        ],\n",
    "        duration=12,  # 1 hour\n",
    "    ),\n",
    "    \"meeting_e\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=10, minute=0), t_to_idx(hour=12, minute=0)],\n",
    "        ],\n",
    "        duration=24,  # 2 hours\n",
    "    ),\n",
    "    \"meeting_f\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=14, minute=0), t_to_idx(hour=16, minute=0)],\n",
    "        ],\n",
    "        duration=48,  # 4 hours\n",
    "    ),\n",
    "    \"meeting_g\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=14, minute=0), t_to_idx(hour=16, minute=0)],\n",
    "        ],\n",
    "        duration=24,  # 2 hours\n",
    "    ),\n",
    "    # Additional meetings can be added here...\n",
    "}\n",
    "\n",
    "# Create a new CP-SAT model\n",
    "model = cp_model.CpModel()\n",
    "\n",
    "# Create start time variables for each meeting\n",
    "start_time_vars = {\n",
    "    meeting_name: model.new_int_var_from_domain(\n",
    "        cp_model.Domain.from_intervals(meeting_info.start_times),\n",
    "        f\"start_{meeting_name}\",\n",
    "    )\n",
    "    for meeting_name, meeting_info in meetings.items()\n",
    "}\n",
    "\n",
    "# rooms\n",
    "rooms = [\"room_a\", \"room_b\"]\n",
    "\n",
    "room_vars = {\n",
    "    meeting_name: {\n",
    "        room: model.new_bool_var(f\"{meeting_name}_in_{room}\") for room in rooms\n",
    "    }\n",
    "    for meeting_name in meetings.keys()\n",
    "}\n",
    "for meeting, _room_vars in room_vars.items():\n",
    "    model.add_exactly_one(_room_vars.values())\n",
    "\n",
    "# Create interval variables for each meeting\n",
    "interval_vars = {\n",
    "    meeting_name: {\n",
    "        room: model.new_optional_fixed_size_interval_var(\n",
    "            start=start_time_vars[meeting_name],\n",
    "            size=meeting_info.duration,\n",
    "            is_present=room_vars[meeting_name][room],\n",
    "            name=f\"interval_{meeting_name}_in_{room}\",\n",
    "        )\n",
    "        for room in rooms\n",
    "    }\n",
    "    for meeting_name, meeting_info in meetings.items()\n",
    "}\n",
    "\n",
    "# Add the no-overlap constraint to the model\n",
    "for room in rooms:\n",
    "    model.add_no_overlap([interval_vars[meeting][room] for meeting in meetings])\n",
    "\n",
    "# Solve the model\n",
    "solver = cp_model.CpSolver()\n",
    "status = solver.solve(model)\n",
    "\n",
    "# Extract and print the solution\n",
    "if status in (cp_model.OPTIMAL, cp_model.FEASIBLE):\n",
    "    for meeting in meetings:\n",
    "        for room in rooms:\n",
    "            if solver.value(room_vars[meeting][room]):\n",
    "                start = solver.value(start_time_vars[meeting])\n",
    "                print(\n",
    "                    f\"{meeting} is in {room} from {start // 12 + 8}:{(start % 12) * 5:02d}\"\n",
    "                )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "meeting_a is in room_b from 8:00 to 10:00\n",
      "meeting_b is in room_a from 10:00 to 14:00\n",
      "meeting_c is in room_b from 16:00 to 16:30\n",
      "meeting_d is in room_a from 8:00 to 9:00\n",
      "meeting_e is in room_b from 10:00 to 12:00\n",
      "meeting_f is in room_a from 14:00 to 18:00\n",
      "meeting_g is in room_b from 14:00 to 16:00\n"
     ]
    },
    {
     "data": {
      "image/png": "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cOzYsUpbnSoiKCiIJk2acOLECR599NFyt4mOjubjjz+moKAAFxcXCgoK+N///me1TUBAADk5OeTl5dGwYUOASudrqu5xzReG0setLzw8PJgwYQKTJ09m7969REdHU1xczK+//mpphbp06RJJSUmWhWujo6PLTBuxY8cOWrVqVWVwWFnQWZqDBw+ye/duEhIS8PPzs6RnZGQQHx/P0aNHad26tc37qy5Go5GkpCSpRiMBPPLII1xIviDFvEia0Ghe0JxTrqekaXW6kHyBRx55xN4aNiNjPXYEZxU4KRyKS5cu8dBDD/HEE0/Qtm1bPD092b17N6+88goPPPAAAJ07d+aee+6hf//+vPHGG7Ro0YKjR4+iaVql/XdKMmfOHJ555hm8vb3p0aMHhYWF7N69m8zMTJ599lkGDx7MzJkzGTlyJM899xxJSUllRofdeuutuLu7M2PGDJ555hl+/fXXMp2gr+e406dPJzU11bKUjz0YPXo08+bNY/369QwYMIAHHniAkSNH8u677+Lp6clzzz1H06ZNLX+bf/zjH9x8883MmzePhx9+mF9++YW33nqrzMjB6+WDDz7glltu4Z577inz2c0338wHH3xQ7/M6OTr+/v7oG+j5ZPwn1QpS7YWTkxMjRozg/fffl8IXTM6jx4zG39/f3iqKOkQFTopycWugodeoch4ntwa1+9PVw8ODW2+9lUWLFpGSksLVq1cJDQ1l5MiRzJgxw7Ld+vXrmTx5MoMGDSIvL48WLVrw8ssv23ycESNG4O7uzquvvsqUKVNo2LChZQkfs8c333zDmDFj6NChA61bt+bll19mwIABln34+fmxevVqpkyZwvLly7n33nt58cUXrSaivJ7jtm/fnpiYGBYuXEj//v2rV5C1hJ+fH4899hgvvvgi/fr148MPP2TChAn07t2boqIi7rnnHr777jvLo7cOHTrw+eefM3v2bObNm0fjxo2ZO3euVcfw66WoqIjVq1czbdq0cj/v378/r7/+OvPnzy/zuPKvTGhoKA8PfJhhjw9z+AldwfR4PDMzkyeffFIKXzA55+fnExoqwczsihqjllyRHPM08RkZGfj6+lp9dr3LS2QVGSqdp8mtgVbtyS/NFxY3NzfpLoayOMvmC/XnXFtLrhgMBo4cOUJMTIw0jzhkc5bNF+Rzls0X6s65OkuuqMBJcir7YzviWnUKhT1R54RCoSgPtVbdXxBZ4l8hBAaDQRpfkM9ZNl+Qz1kIQXZ2tjS+IJ+zbL4gn7NsvuAYzipwukGQaVRdRTOCOzKyOcvmC3I5G41GTpw4IdV5J5uzbL4gn7NsvuAYzipwUigUCoVCobARNapOoVAo/iLk5uayb98+KQYNmEfVyeIL8jnL5gt/DiSxJypwUtQ7spygJZHNWTZfkM9Zts7laWlpvPvee3z6yScUFxfbW6dKGjRowIABA1i3bp0UviCfs2y+YHJ+ZNAgQkJCiIiIsIuDGlUnOWpUnUJhO3/lc2LPnj107NiRgS8tJbBZS3vrKBQ14vzJZD5/fiy//fYbHTp0qLX9VmdUnWpxukGQpXOfefSUXq+XpoVBNmfZfEE+Z6PRSGZmJr6+vtIskCqEIDo6mqBmLWgS3c7eOlUjBG6FOeS7eIIEdQKQz1k2X0DDVI/VqDrFdSNTw2FRUZG9FaqNbM6y+YJczkII0tLSpDrvAOLj42VYpg4w3SC9r5xHQ54yls1ZNl8wLbMYHx9vVwcVOCluOFauXImPj0+t7zc1NRVN0ypdyLc0L774InFxcXV+3IiICBYvXnxdx1EoFApF1ajASVEh2cZszhefr/CVbcyuk+NeuHCBsWPHEhYWhouLC8HBwdx3333s2LGjTo53I7Br165K18izhfj4eDRNQ9M0XF1dadWqFQsWLHDYVpWIiAiLr16vp0mTJjz55JNkZmbaW02hUNzAqD5OinLJNmbzUdZHGDBUuI0ePY95P4aXrvKOdKWpqk9I//79KSoqYtWqVURGRvLHH3/w3//+l0uXLlXrOLWJo/djCQgIsHpfU9+RI0cyd+5cCgsL+eGHHxg1ahQ+Pj6MHTu2NjQrpSbOc+fOZeTIkRgMBo4dO8aoUaN45pln+Pjjj+vA0BpPT886P0Ztk5aWRjN7S1SDwgbu9laoNrI5y+YrMNVje+LYdwOFzdT2Ao0FxoJKgyYAAwYKjAXV2q+5NaOiDsCXL19m27ZtLFy4kC5duhAeHs4tt9zC9OnT+fvf/2613ejRowkKCsLV1ZWbbrqJTZs2We1r8+bNREdH4+HhQY8ePTh37pzV5++//z7R0dG4urrSunVr3nnnHavPd+7cSfv27XFzc+Ouu+4q86isvEeCGzdurLJzs63HdXV1pVOnTuzdu7fS/YH1ozpN03Bzc+ODDz6gb9++uLu707JlS77++usq9+Pu7k5wcDDh4eEMHz6ctm3b8p///MfyeWZmJo899hi+vr64u7vTs2dPkpOTrfaxfv162rRpg4uLCxEREbz++utlXF966SUee+wxPDw8CA8P55tvviEnJ4cHH3wQDw8P2rZty+7du6v09fT0JDg4mKZNm9KlSxcef/xx9uzZU+X3rhe9Xk/z5s2lWRgVTPVi06ZNCEl6OQlNR6ZXE4Qmz21KNmfZfAEEpnpsz0Ek8pSWolJkGlV39erVCh//eHh44OHhwcaNGytcgsNoNNKzZ0927NjB6tWrOXLkCC+//LLVTezKlSu89tprfPzxx/z000+cPn2ayZMnWz5fs2YNs2fP5p///CeJiYnMnz+fWbNmsWrVKsA0UWDv3r2JiYlh9+7dPP/881bfrynVOe5vv/3Giy++WO3jmst2zpw5DBw4kAMHDtCrVy8effRRMjIybN7Htm3bOHr0KM7Ozpb0YcOGsXv3br7++mt++eUXhBD06tWLq1evAvDbb78xcOBAHnnkEQ4ePMiLL77IrFmzWLlypdX+Fy1axJ133snevXu5//77GTp0KEOHDuXRRx9lz549NG/enMcee6xajwnPnj3LN998w6233mrzd2qK0WgkPT1dmvMOTH/Tm2++WZ6OwELgcSUDHPRRcbnI5iybL6YO7TfffLMaVeeIxMfHM3HixHo95o4dO4iNjcXJyYkHH3ywWt911H4o5WG+yZZHgwYNWLlyJatWrcLHx4c777yTGTNmcODAAcs2W7ZsYefOnWzYsIFu3boRGRlJ79696dmzp9Uxli1bRqdOnejQoQPjx4/nv//9r+XzF154gddff51+/frRrFkz+vXrx6RJk3j33XcBWLt2LUajkQ8++IA2bdrQvXv3Wgmcqnvc3r17M2XKlBod6/HHH2fQoEG0aNGC+fPnk5uby86dOyv9zjvvvIOHhwcuLi7cc889GI1GnnnmGQCSk5P5+uuvef/997n77rtp164da9as4ezZs2zcuBGAN954g3vvvZdZs2bRqlUrhg0bxvjx43n11VetjtOrVy9Gjx5Ny5YtmT17NtnZ2bRv356HHnqIVq1aMW3aNBITE/njjz8q9Z02bRoeHh64ubkREhKCpmm88cYbNSqv6iCEID09XarzDqBTp06StDeZbpAeBRnyBHrI5yybL5hG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",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from ortools.sat.python import cp_model\n",
    "from collections import namedtuple\n",
    "\n",
    "\n",
    "# Function to convert time to index\n",
    "def t_to_idx(hour, minute):\n",
    "    return (hour - 8) * 12 + minute // 5\n",
    "\n",
    "\n",
    "# Function to convert index back to time\n",
    "def idx_to_time(index):\n",
    "    hour = 8 + index // 12\n",
    "    minute = (index % 12) * 5\n",
    "    return f\"{hour}:{minute:02d}\"\n",
    "\n",
    "\n",
    "# Define meeting information\n",
    "MeetingInfo = namedtuple(\"MeetingInfo\", [\"start_times\", \"duration\"])\n",
    "\n",
    "# Meeting definitions\n",
    "meetings = {\n",
    "    \"meeting_a\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(8, 0), t_to_idx(12, 0)],\n",
    "            [t_to_idx(16, 0), t_to_idx(16, 0)],\n",
    "        ],\n",
    "        duration=24,\n",
    "    ),\n",
    "    \"meeting_b\": MeetingInfo(\n",
    "        start_times=[[t_to_idx(10, 0), t_to_idx(12, 0)]], duration=48\n",
    "    ),\n",
    "    \"meeting_c\": MeetingInfo(\n",
    "        start_times=[[t_to_idx(16, 0), t_to_idx(17, 0)]], duration=6\n",
    "    ),\n",
    "    \"meeting_d\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(8, 0), t_to_idx(10, 0)],\n",
    "            [t_to_idx(12, 0), t_to_idx(14, 0)],\n",
    "        ],\n",
    "        duration=12,\n",
    "    ),\n",
    "    \"meeting_e\": MeetingInfo(\n",
    "        start_times=[[t_to_idx(10, 0), t_to_idx(12, 0)]], duration=24\n",
    "    ),\n",
    "    \"meeting_f\": MeetingInfo(\n",
    "        start_times=[[t_to_idx(14, 0), t_to_idx(14, 0)]], duration=48\n",
    "    ),\n",
    "    \"meeting_g\": MeetingInfo(\n",
    "        start_times=[[t_to_idx(14, 0), t_to_idx(16, 0)]], duration=24\n",
    "    ),\n",
    "}\n",
    "\n",
    "# Create the model\n",
    "model = cp_model.CpModel()\n",
    "\n",
    "# Create start time and room variables\n",
    "start_time_vars = {\n",
    "    name: model.new_int_var_from_domain(\n",
    "        cp_model.Domain.from_intervals(info.start_times), f\"start_{name}\"\n",
    "    )\n",
    "    for name, info in meetings.items()\n",
    "}\n",
    "\n",
    "rooms = [\"room_a\", \"room_b\"]\n",
    "room_vars = {\n",
    "    name: {room: model.new_bool_var(f\"{name}_in_{room}\") for room in rooms}\n",
    "    for name in meetings\n",
    "}\n",
    "\n",
    "# Ensure each meeting is assigned to exactly one room\n",
    "for name, room_dict in room_vars.items():\n",
    "    model.add_exactly_one(room_dict.values())\n",
    "\n",
    "# Create interval variables and add no-overlap constraint\n",
    "interval_vars = {\n",
    "    name: {\n",
    "        room: model.new_optional_fixed_size_interval_var(\n",
    "            start_time_vars[name],\n",
    "            info.duration,\n",
    "            room_vars[name][room],\n",
    "            f\"interval_{name}_in_{room}\",\n",
    "        )\n",
    "        for room in rooms\n",
    "    }\n",
    "    for name, info in meetings.items()\n",
    "}\n",
    "\n",
    "for room in rooms:\n",
    "    model.add_no_overlap([interval_vars[name][room] for name in meetings])\n",
    "\n",
    "# Solve the model\n",
    "solver = cp_model.CpSolver()\n",
    "status = solver.solve(model)\n",
    "\n",
    "# Extract and print the solution\n",
    "schedule = {room: [] for room in rooms}\n",
    "if status in (cp_model.OPTIMAL, cp_model.FEASIBLE):\n",
    "    for meeting in meetings:\n",
    "        for room in rooms:\n",
    "            if solver.value(room_vars[meeting][room]):\n",
    "                start = solver.value(start_time_vars[meeting])\n",
    "                duration = meetings[meeting].duration\n",
    "                schedule[room].append((meeting, start, duration))\n",
    "                print(\n",
    "                    f\"{meeting} is in {room} from {idx_to_time(start)} to {idx_to_time(start + duration)}\"\n",
    "                )\n",
    "\n",
    "# Plotting\n",
    "fig, ax = plt.subplots(figsize=(6, 4))\n",
    "\n",
    "colors = {\"room_a\": \"skyblue\", \"room_b\": \"lightgreen\"}\n",
    "\n",
    "# Plot possible times as shaded areas\n",
    "for meeting, info in meetings.items():\n",
    "    for time_range in info.start_times:\n",
    "        start, end = time_range\n",
    "        ax.plot(\n",
    "            [start, end + info.duration],\n",
    "            [meeting, meeting],\n",
    "            color=\"red\",\n",
    "            linestyle=\"-\",\n",
    "            marker=\"o\",\n",
    "        )\n",
    "\n",
    "# Plot scheduled times for each room\n",
    "for room, meetings in schedule.items():\n",
    "    for meeting, start, duration in meetings:\n",
    "        ax.barh(meeting, duration, left=start, color=colors[room], edgecolor=\"black\")\n",
    "\n",
    "# Customizing the plot\n",
    "ax.set_xlabel(\"Time\")\n",
    "ax.set_ylabel(\"Meetings\")\n",
    "ax.set_title(\"Meeting Schedule\")\n",
    "ax.grid(True, linestyle=\"--\", alpha=0.6)\n",
    "\n",
    "# Manually create legend entries\n",
    "red_line = plt.Line2D((0, 1), (0, 0), color=\"red\", marker=\"o\", linestyle=\"-\")\n",
    "skyblue_bar = plt.Line2D([], [], color=\"skyblue\", marker=\"s\", linestyle=\"None\")\n",
    "lightgreen_bar = plt.Line2D([], [], color=\"lightgreen\", marker=\"s\", linestyle=\"None\")\n",
    "\n",
    "ax.legend(\n",
    "    [red_line, skyblue_bar, lightgreen_bar],\n",
    "    [\"Possible Times\", \"Scheduled in Room A\", \"Scheduled in Room B\"],\n",
    "    loc=\"upper left\",\n",
    ")\n",
    "\n",
    "\n",
    "# Convert x-axis to show actual time labels\n",
    "def time_ticks(x, pos):\n",
    "    hour, minute = idx_to_time(int(x)).split(\":\")\n",
    "    return f\"{hour}:{minute}\"\n",
    "\n",
    "\n",
    "ax.xaxis.set_major_formatter(plt.FuncFormatter(time_ticks))\n",
    "ax.xaxis.set_major_locator(plt.MultipleLocator(12))  # Every hour\n",
    "ax.xaxis.set_minor_locator(plt.MultipleLocator(3))  # Every 15 minutes\n",
    "\n",
    "plt.xticks(rotation=45)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "meeting_a is in room_b from 8:00 to 10:00\n",
      "meeting_b is in room_a from 10:00 to 16:00\n",
      "meeting_c is in room_b from 16:00 to 16:30\n",
      "meeting_d is in room_b from 12:35 to 13:35\n",
      "meeting_e is in room_b from 10:00 to 12:00\n",
      "meeting_f is in room_b from 16:30 to 20:30\n",
      "meeting_g is in room_a from 16:00 to 18:00\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADX+0lEQVR4nOzdeXwU9eH/8dfskpPcXEFICKCEw8hlW6kHwQMR4ascXhQVFBHUCvzkUBQqYkFaKVhqFbUKitQD8UItrZVUpFaRGwmHIBCinDmBnLvz+2PdlZA7JJlk5/18PHy0TI79zGs3m3x2Zj5rmKZpIiIiIiIiIiK1zmH1AERERERERET8lSbdIiIiIiIiInVEk24RERERERGROqJJt4iIiIiIiEgd0aRbREREREREpI5o0i0iIiIiIiJSRzTpFhEREREREakjmnSLiIiIiIiI1BFNukVERERERETqiCbdIiIiNmEYBo8//rjVwzhno0aNIiwsrF5uKyEhgVGjRtXoa5OTk0lOTq7V8YiISOOjSbeIiMg5WrJkCYZhYBgGX3zxRamPm6ZJXFwchmEwaNCgOh3Lxx9/3CAn1seOHWPChAl07tyZkJAQWrZsyS9/+UumTZvGyZMnrR6eiIhInWli9QBERET8RXBwMMuXL+eyyy4rsf0///kPhw4dIigoqM7H8PHHH/Pss8+WOfHOy8ujSZP6/9WfkZHBxRdfTE5ODnfddRedO3fmxIkTbN26leeee47x48fX25FrERGR+qZJt4iISC0ZOHAgb7/9Nn/+859LTG6XL19O7969OX78uIWj87woYIW//e1vHDx4kHXr1vHrX/+6xMdycnIIDAy0ZFwiIiL1QaeXi4iI1JLbbruNEydO8K9//cu3rbCwkBUrVjBixIgyv8btdrNw4UK6detGcHAwrVq14t577yUzM7PU537yySdcfvnlNG3alPDwcK6//nq+/fZb38dHjRrFs88+C+A73d0wDN/Hz76m+/HHH8cwDL777jtGjRpFVFQUkZGRjB49mtOnT5e47by8PB588EGaN29OeHg4//d//0d6enqVrhPfu3cvTqeTSy65pNTHIiIiSr0Y8NVXXzFw4ECio6Np2rQpF110Ec8880ypr01PT+fGG28kLCyMFi1aMHnyZFwuV4nPqWpf0zR58sknadu2LaGhofTr169E27Obnc17icH+/fsrbFFQUMDvfvc7zj//fIKCgoiLi2Pq1KkUFBRU+HUiItJ4adItIiJSSxISEujTpw9///vffds++eQTsrOzufXWW8v8mnvvvZcpU6Zw6aWX8swzzzB69Ghef/11rr32WoqKinyf99prr3H99dcTFhbGvHnzmDFjBjt27OCyyy7zTfTuvfderrnmGt/ne/+rzM0330xubi5z587l5ptvZsmSJcyaNavE54waNYpFixYxcOBA5s2bR0hICNdff32VurRr1w6Xy1WlsfzrX//iiiuuYMeOHUyYMIH58+fTr18/Vq1aVeLzXC4X1157Lc2aNePpp5+mb9++zJ8/nxdeeKHE51W178yZM5kxYwbdu3fnj3/8Ix06dKB///6cOnWqSvtYFW63m//7v//j6aefZvDgwSxatIgbb7yRBQsWcMstt9Ta7YiISANjioiIyDl55ZVXTMBcv369+Ze//MUMDw83T58+bZqmad50001mv379TNM0zXbt2pnXX3+97+vWrl1rAubrr79e4vv94x//KLE9NzfXjIqKMu+5554Sn3f48GEzMjKyxPb777/fLO/XO2D+7ne/8/37d7/7nQmYd911V4nPGzJkiNmsWTPfvzds2GAC5sSJE0t83qhRo0p9z7IcPnzYbNGihQmYnTt3NseNG2cuX77czMrKKvF5xcXFZvv27c127dqZmZmZJT7mdrt9///OO+80AfOJJ54o8Tk9e/Y0e/fu7ft3VfsePXrUDAwMNK+//voStzN9+nQTMO+8807fNm+zs3kfA99//71vW9++fc2+ffv6/v3aa6+ZDofDXLt2bYmvff75503AXLduXanvKyIijZ+OdIuIiNSim2++mby8PFatWkVubi6rVq0q99Tyt99+m8jISK655hqOHz/u+693796EhYWxZs0awHP0Nysri9tuu63E5zmdTn71q1/5Pq+mxo0bV+Lfl19+OSdOnCAnJweAf/zjHwDcd999JT7vt7/9bZW+f6tWrdiyZQvjxo0jMzOT559/nhEjRtCyZUtmz56NaZoAbNq0ie+//56JEycSFRVV4nuUdUp3WePet2+f799V7fvpp59SWFjIb3/72xK3M3HixCrtX1W9/fbbdOnShc6dO5cYz5VXXglwzvejiIg0TFpITUREpBa1aNGCq6++muXLl3P69GlcLhfDhw8v83P37NlDdnY2LVu2LPPjR48e9X0e4JucnS0iIuKcxhwfH1/i39HR0QBkZmYSERHBgQMHcDgctG/fvsTnnX/++VW+jdatW/Pcc8/x17/+lT179rB69WrmzZvHzJkzad26NWPGjGHv3r0AXHjhhZV+v+DgYFq0aFFq3Gdeq13VvgcOHADgggsuKPHxFi1a+FrUhj179pCamlpq3GePR0RE/Ism3SIiIrVsxIgR3HPPPRw+fJjrrruu1FFbL7fbTcuWLXn99dfL/Lh3cuZ2uwHPddqxsbGlPu9c3wbM6XSWud17BLo2GYZBp06d6NSpE9dffz0XXHABr7/+OmPGjKnW9ylvzGeqat/qKOuIO1BqAbfyxpOUlMSf/vSnMj8eFxdX7fGIiEjDp0m3iIhILRsyZAj33nsv//vf/3jzzTfL/byOHTvy6aefcumllxISElLh5wG0bNmSq6++usLbLm9SeC7atWuH2+3m+++/L3E0+Lvvvjun79uhQweio6P58ccfgZ/3c/v27ZXuZ1VUtW+7du0Az5HoDh06+LYfO3as1Crn3iPfWVlZJV5M8R4tr2w8W7Zs4aqrrqqT+0lERBomXdMtIiJSy8LCwnjuued4/PHHGTx4cLmfd/PNN+NyuZg9e3apjxUXF5OVlQXAtddeS0REBHPmzCmx4rbXsWPHfP+/adOmAL6vrQ3XXnstAH/9619LbF+0aFGVvv6rr74qcxXwr7/+mhMnTpCYmAhAr169aN++PQsXLiw1/pocda9q36uvvpqAgAAWLVpU4nYWLlxY6uu8Lwx8/vnnvm2nTp1i6dKlVRpPeno6L774YqmP5eXl1epK6SIi0nDoSLeIiEgduPPOOyv9nL59+3Lvvfcyd+5cNm/eTP/+/QkICGDPnj28/fbbPPPMMwwfPpyIiAiee+45br/9dnr16sWtt95KixYtOHjwIB999BGXXnopf/nLXwDo3bs3AA8++CDXXnstTqez3Lcrq6revXszbNgwFi5cyIkTJ7jkkkv4z3/+w+7du4HKj66/9tprvP766wwZMoTevXsTGBhIamoqL7/8MsHBwUyfPh0Ah8PBc889x+DBg+nRowejR4+mdevW7Ny5k2+//ZbVq1dXa9xV7et9j++5c+cyaNAgBg4cyKZNm/jkk09o3rx5ie/Zv39/4uPjufvuu5kyZQpOp5OXX37Zd39U5Pbbb+ett95i3LhxrFmzhksvvRSXy8XOnTt56623WL16NRdffHG19lFERBo+TbpFREQs9Pzzz9O7d28WL17M9OnTadKkCQkJCYwcOZJLL73U93kjRozgvPPO46mnnuKPf/wjBQUFtGnThssvv5zRo0f7Pm/o0KH89re/5Y033mDZsmWYpnnOk26AV199ldjYWP7+97/z7rvvcvXVV/Pmm2+SmJhIcHBwhV977733Ehoayr///W/ef/99cnJyaNGiBf379+eRRx6hZ8+evs+99tprWbNmDbNmzWL+/Pm43W46duzIPffcU6NxV7Xvk08+SXBwMM8//zxr1qzhV7/6Ff/85z9LvRd5QEAA7777Lvfddx8zZswgNjaWiRMnEh0dXeJ+KIvD4eC9995jwYIFvPrqq7z77ruEhobSoUMHJkyYQKdOnWq0jyIi0rAZZl2skiIiIiJ+b/PmzfTs2ZNly5bxm9/8xurhiIiINEi6pltEREQqlZeXV2rbwoULcTgcXHHFFRaMSEREpHHQ6eUiIiJSqT/84Q9s2LCBfv360aRJEz755BM++eQTxo4dq7e6EhERqYBOLxcREZFK/etf/2LWrFns2LGDkydPEh8fz+23386jjz56zu8TLiIi4s806RYRERERERGpI7qmW0RERERERKSOaNItIiIiIiIiUkd0EVYj53a7+eGHHwgPD8cwDKuHIyIiIiIi0iiZpklubi7nnXceDkftHZ/WpLuR++GHH7RqrIiIiIiISC1JS0ujbdu2tfb9NOlu5MLDwwHYv38/0dHRFo/GGi6Xi2+//ZZu3brhdDqtHo4l1EANQA281EENQA1ADUANvNRBDUANoPIGOTk5xMXF+eZYtUWT7kbOe0p5REQEERERFo/GGi6Xi7CwMCIiImz9BKIGaqAGHuqgBqAGoAagBl7qoAagBlD1BrV92a4WUhMRERERERGpI5p0+wk7L6JmGAaxsbFqoAZqoAaAOoAagBqAGoAaeKmDGoAagHUNDNM0zXq9RalVOTk5REZGkp2dbdvTy0VERERERM5VXc2tdE23n3C5XFYPwTIul4v9+/eTkJBg6+tT1EAN1MBDHdQA1ADUANTA68wOhmFQWFho9ZDqncvlIj09nTZt2tj2saAGP7/dcvv27eu1gSbd4hdyc3OtHoLl1EANQA281EENQA1ADUANvHJzcyksLOTgwYO4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FxERERGxm9BQOHmyav/9dA10pT7+uGrfr5qTzX79+rF582b27NlDXl4eS5cupWnTplX62jFjxrBv3z5GjhzJt99+yy9+8QsWLVoEwHXXXceBAweYNGkSP/zwA1dddRWTJ0+u1tgqcvLkSWbNmsXmzZt9/23bto09e/YQHBxca7cTEBBQ4t+GYZS5ze12+8bVu3fvEuPavHkzu3fvZsSIEQC88sorfPnll/z617/mzTffpFOnTvzvf/+rtTHbTeN8uUtEREREKnXy5Ek2b97sF9di1oRpmmRmZtq6AXg65Ofn+xbRAsAwoIoTV/r396xSnp5e9vXYhuH5eP/+UAfXyzZt2pTzzz+/1PYuXbpQXFzMV1995TtCfeLECXbt2kXXrl19nxcXF8e4ceO48847eeKJJ3jxxRf57W9/C3gWL7vzzju58847ufzyy5kyZQpPP/10uWP53//+R3x8POBZiG337t106dKlzM/t1asXu3btKnPsVurVqxdvvfUWLVu29K2MXpaePXvSs2dPHnnkEfr06cPy5cu55JJL6nGk/kOTbj9h51U5HQ4HiYmJaqAGaqAGgDqAGoAaABw6dIhbbrmFH3/8EfMcF65qrAzDICoqiqysLNs2AE+Hiy++mL/97W81+wZOp+dtwYYP90ywz2zpfTFj4cI6mXBX5IILLuCGG27gnnvuYfHixYSHh/Pwww/Tpk0bbrjhBgAmTpzIddddxwUXXEBGRgYpKSm+SfLMmTPp3bs33bp1o6CggFWrVpU7gfZ64oknaNasGa1ateLRRx+lefPm3HjjjWV+7syZMxk0aBDx8fEMHz4ch8PBli1b2L59O08++WSttqiq4OBgfvOb3/D0009zww038MQTT9C2bVsOHDjAypUrmTp1KkVFRbzwwgv83//9H+eddx67du1iz5493HHHHZaMubYFBQXV+4twmnSLXwgMDLR6CJZTAzUANfBSBzUANTh+/DjHjh3jptl/pWX7C6wejkVMHIDnpFr7Huk++v0eNi6Z7zu9uEaGDoUVK8p+n+6FC+v0fbor8sorrzBhwgQGDRpEYWEhV1xxBR9//LHv9GqXy8X999/PoUOHiIiIYMCAASxYsADwPEc88sgj7N+/n5CQEC6//HLeeOONCm/vqaeeYsKECezZs4cePXrw4Ycflvtcc+2117Jq1SqeeOIJ5s2bR0BAAJ07d2bMmDG1G6EaDMMgNDSUzz//nGnTpjF06FByc3Np06YNV111FREREeTl5bFz506WLl3KiRMnaN26Nffffz/33nuvZeOuTVac9WKYdn7Zzw/k5OQQGRlJRkYG0dHRVg/HEi6Xi23btpGUlGTNWwA0AGqgBqAGXuqgBqAGABs2bOBvf/sbAZcNpXWXHlYPxxKG6aZV5j6ORHfANOx71sOPqZsJ3fZvbr31VhITE8/temKXC9auhR9/hNat4fLL6/0Id02YpkleXh4hISG2vdRADTwNsrKy+PHHH+nQoUOpnwXv3Co7O7vCU++rS0e6RURERESkapxOSE62ehQijYp9X/ITERERERERqWOadIuIiIiIiIjUEU26/YSdV2d1OBwkJSWpgRqogRoA6gBqAGrg9dJLL3EOS2c1eiaG53puGy+iBp6F5FasWGH1MCwXEhJi9RAspwaeFdzr+5p2e/8mEr9RWFho9RAspwZqAGrgpQ5qAGoAEBYWZvUQLOd0FVk9hAYhNDTU6iFYTutHqwFY00CTbj9xTm8B0ci53W527dqlBmqgBmoAqAOoAaiB16233mrrP/YMTJrnpGFg74mGAxg4cKDVw7Bcfn6+1UOwnBpAQUFBvU+87fw8LCIiIiIiIlKnNOkWERERERERqSOadItfcDqdVg/BcmqgBqAGXuqgBqAGoOvaAUz9uQtAUZGubReximHqavpGLScnh8jISLKzs4mIiLB6OCIiItJAbNy4kd69e/PA65/Spkt3q4cjFkpP3cKH0+/m/fffJzExkeDgYN/HDh48yPHjx+ttLM2bNyc+Pr7ebm/JkiVMnDiRrKysWv2++/fvp3379mzatIkePXpU6Wsef/xx3nvvPTZv3lynt5uQkMDEiROZOHFijW+nManu/ubn5/P999/Tvn37Ej8LUHdzqya19p3EUnZ+7cQ0TXJzcwkPD6/35f8bCjVQA1ADL3VQA1AD8DSIi4sDOy8iZpoEFuVRGBACNn0ceJi0bt261NaDBw/SuUtn8k7n1dtIQkJD2Jm6s8oT72PHjjFz5kw++ugjjhw5QnR0NN27d2fmzJlceumlVb5d0zRxu904HA6/f05Yv349TZs2LbXdTg3KY5omLper3m9Xk24/YefVWd1uN/v27SMpKcm2pxKqgRqAGnipgxqAGngNGjTI1idXG5jEnPzB9u/V7QCSk5NLbT9+/Dh5p/MYuXgkrTq1qvNxHNl9hGX3LuP48eNVnnQPGzaMwsJCli5dSocOHThy5Aj//ve/OXHiRLVvv6CgwBbvU92iRYtyP1bTBoWFhQQGBp7LsBqMwsJCrV4uIiIiIiL1p1WnVsR1j6vz/6o7sc/KymLt2rXMmzePfv360a5dO375y1/yyCOP8H//938lPu/ee++lVatWBAcHc+GFF7Jq1aoS32v16tX06tWL8PBwBgwYwI8//lji4y+99BJdunQhODiYzp0789e//rXEx7/++mt69uxJcHAwF198MZs2bSrx8SVLlhAVFVVi23vvvVfpEeVzvd2yJCQksHDhQt+/DcPgpZdeYujQoTRv3pxOnTrxwQcfVPo9Zs+ezR133EFERARjx44F4J133qFbt24EBQWRkJDA/PnzS3xdZmYmd9xxB9HR0YSGhnLdddexZ88e38e9nVatWkViYiKhoaEMHz6c06dPs3TpUhISEoiOjubBBx+s1hHp3NxcbrvtNpo2bUqbNm149tlnq/y19UGTbhERERERaXDCwsIICwvjvffeo6CgoMzPcbvdXHfddaxbt45ly5axY8cOnnrqqRJnuJw+fZr58+fz0ksv8Z///IeDBw8yefJk38dff/11Zs6cye9//3tSU1OZM2cOM2bMYOnSpQCcPHmSQYMG0bVrVzZs2MDjjz9e4utrqj5vd9asWdx000189dVXXHfddfzmN78hIyOjwq95+umn6d69O5s2bWLGjBls2LCBm2++mVtvvZVt27bx+OOPM2PGDJYsWeL7mlGjRvHNN9/wwQcf8OWXX2KaJgMHDiyxkN/p06f585//zBtvvME//vEPUlJSGDJkCB9//DEff/wxr732GosXL2bFihVV3r8//vGPvrE+/PDDTJgwgX/961/V7lRXdHq5+IWzF0GwIzVQA1ADL3VQA1AD8Bx1Kv9EU3sodvjHKbHnwsSzQFRj06RJE5YsWcI999zD888/T69evejbty+33norF110EQCffvopX3/9NampqXTq1AmADh06lPg+RUVFPPfcc7Rp04bg4GAeeOABnnjiCd/Hf/e73zF//nyGDh0KQPv27dmxYweLFy/mzjvvZPny5bjdbv72t78RHBxMt27dOHToEOPHjz+n/avP2x01ahS33XYb+fn5zJkzh0WLFvH1118zYMCAcr/myiuv5KGHHvL9+ze/+Q1XXXUVM2bMAKBTp07s2LGDP/7xj4waNYo9e/bwwQcfsG7dOn79618DnhcW4uLieO+997jpppuAn++Pjh07AjB8+HBee+01jhw5QlhYGF27dqVfv36sWbOGW265pUr7d+mll/Lwww/7xrVu3ToWLFjANddcU+pzrbieXUe6/YSdr1dzOp107txZDdRADdQAUAdQA1AD8Pxh+cYbb9j6WmbTcHA8Kh7TsPefvCYGH330kdXDqJFhw4bxww8/8MEHHzBgwABSUlLo1auX7+jq5s2badu2rW/CXZbQ0FDOP/98QkJCMAyD1q1bc/ToUQBOnTrF3r17ufvuu31H1sPCwnjyySfZu3cvAKmpqVx00UUlXsjr06fPOe1Xfd/uRRddhGEYhISEEBYWRkREhK9BeS6++OIS/05NTS21eN2ll17Knj17cLlcpKam0qRJE371q1/5Pt6sWTMSExNJTU31bQsNDfVNuAFatWpFQkICYWFhJbZVNr4znd2lT58+JW7TyzAMgoOD633irSPdfsLuC6llZmYSHR2Nw2HPX6pqoAagBl7qoAagBuBZpbdLly4YNl+9PKQgl7ygcFuvXm5glpjkNDbBwcFcc801XHPNNcyYMYMxY8bwu9/9jlGjRlVpUbCAgADfqtVOpxPDMHwLaZ08eRKAF198scRkEap3UMvhcJRanKui90avrdutqrIaVDZ/KGsF9Noay5kMwyhzW13Mb0zTpLi4WAupWSU5OblRv5ed3d8yLC0tTQ3UQA3UAFAHUANQA6/k5GQbH+f2TDYjTx+19wsPgAH88pe/tHoYtaZr166cOnUK8BzBPXToELt376706woLC0tta9WqFeeddx779u3j/PPPL/Ff+/btAejSpQtbt24lPz/f93X/+9//SnyfFi1akJub6xsXUOH7cdfW7VZXWQ2qqkuXLqxbt67EtnXr1tGpUyecTiddunShuLiYr776yvfxEydOsGvXLrp27Vrj262Ks7v873//o0uXLmV+bkUvhtQV2026U1JSMAyDrKysEttXrlzJ7NmzrRmUiIhIbXG5ICWFqE8+gZQUz79FxLYMl4vzd2zhwgMHMAoKoBG9EHXixAmuvPJKli1bxtatW/n+++95++23+cMf/sANN9wAQN++fbniiisYNmwY//rXv/j+++/55JNP+Mc//lHl25k1axZz587lz3/+M7t372bbtm288sor/OlPfwJgxIgRGIbBPffcw44dO/j44495+umnS3yPX/3qV4SGhjJ9+nT27t3L8uXLSywwVle3W58eeugh/v3vfzN79mx2797N0qVL+ctf/uJb3O2CCy7ghhtu4J577uGLL75gy5YtjBw5kjZt2vjur7qybt06/vCHP7B7926effZZ3n77bSZMmFCnt1kdOr38JzExMVYPQURE5NysXAkTJuA8dIgE77a2beGZZ+CnhXpExD46/XsVV//xUSKO/kB+u3Z8f8cdsHs3xMdDdLTv847sPlIv46nu7YSFhfGrX/2KBQsWsHfvXoqKioiLi+Oee+5h+vTpvs975513mDx5MrfddhunTp3i/PPP56mnnqry7YwZM4bQ0FD++Mc/MmXKFJo2bUpSUpLvLNiwsDA+/PBDxo0bR8+ePenatSvz5s1j2LBhvu8RExPDsmXLmDJlCi+++CJXXXUVjz/+uO+tturqdutTr169eOutt5g5cyazZ8+mdevWPPHEE4waNcr3Oa+88goTJkxg0KBBFBYWcsUVV/Dxxx+XOn28tj300EN88803zJo1i4iICP70pz9x7bXX1ultVodhWnjeVXJyMklJSTidTpYuXUpgYCBPPvkkI0aM4IEHHmDFihW0atWKRYsWcd111wGwfft2pkyZwtq1a2natCn9+/dnwYIFNG/eHPBcwzVv3jxeeOEFDh8+TKdOnZgxYwbDhw9n//79vtM1vO68806WLFlCcnIyPXr08L2nXUJCAmPHjuW7777j7bffJjo6mscee6zED85///tf7rvvPnbu3MmFF17IY489xpAhQ9i0aRM9evSodP8/+OADHnroIdLS0ujTpw+jRo1i1KhRZGZmlnqfv/Lk5OQQGRlJRkYG0Wc8edqJy+Vi//79JCQk2HbBHDVQA1ADL9t2WLkShg8vfRTLex3rihW2mnjb9nFwBu9bDLW/bQLndelh9XAsYZhuonIPkxUea7vF1Dr9exVDpt4Fpmcpvfx27fj++edp37w5wQAdO3IwN5fOXTqTdzqv3sYVEhrCztSdxMfH19ttgueSk4KCAoKCgixZvbohUANPg5ycHNLT0+nQoUOpd7nwzq2ys7OJiIiotdu1/Ej30qVLmTp1Kl9//TVvvvkm48eP591332XIkCFMnz6dBQsW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WMblcrF37141UAM1UAMPN4Snh4N9F2fVYwE1ADUANfBSBzUANQDrGtToSDdAbGxsqVcJfvnLX57zgERqIjc31+ohWE4N1ADUAMDAIPBUIAYGJvZdoVWPBTUANQA18FIHNQA1AGsa1GjSPWTIkDLPgzcMg+DgYM4//3xGjBhBYmLiOQ9QREREREREpLGq0enlkZGRfPbZZ2zcuBHDMDAMg02bNvHZZ59RXFzMm2++Sffu3Vm3bl1tj1dERERERESk0ajRke7Y2FhGjBjBX/7yF98CXm63mwkTJhAeHs4bb7zBuHHjmDZtGl988UWtDljKZvdVCOPi4tRADdRADQAwDZOTrU5iGvY9tVyPBTUANQA18FIHNQA1AOsa1OhI99/+9jcmTpxYYsVsh8PBb3/7W1544QUMw+CBBx5g+/bttTZQqZjdVy9v1qyZGqiBGqiBhwEFkQUN6u3C6pseC2oAagBq4KUOagBqANY1qNGtFRcXs3PnzlLbd+7c6VsJLjg42NavotQ3u69CeOZjz47UQA1ADXzcELU/yvarl9v9saAGagBq4KUOagBqANY1qNHp5bfffjt3330306dP5xe/+AUA69evZ86cOdxxxx0A/Oc//6Fbt261N1KRCuTn51s9BMupgRqAGoBn9XJnodP2q5frsaAGoAagBl7qoAagBmBNgxpNuhcsWECrVq34wx/+wJEjRwBo1aoVkyZNYtq0aQD079+fAQMG1N5IRURERERERBqZGk26nU4njz76KI8++ig5OTkARERElPic+Pj4cx+diIiIiIiISCNWo0n3mc6ebIs17L4gQocOHdRADdRADQDP6uU5bXJsvXq5HgtqAGoAauClDmoAagDWNajRrR05coTbb7+d8847jyZNmuB0Okv8J/XPzovWGYZBRESEGqiBGqiBhwFFTYtsvXq5HgtqAGoAauClDmoAagDWNajRpHvUqFFs3LiRGTNmsGLFClauXFniP6l/dl+FcNu2bWqgBmqgBgAYboOY72Iw3Pb9o0KPBTUANQA18FIHNQA1AOsa1Oj08i+++IK1a9fSo0ePWh6OSM3Y+cnDSw3UANTAy84Tbi89FtQA1ADUwEsd1ADUAKxpUKMj3XFxcZimfa+VExEREREREamKGk26Fy5cyMMPP8z+/ftreTgiIiIiIiIi/qNGp5ffcsstnD59mo4dOxIaGkpAQECJj2dkZNTK4KTq7L4KYWJiohqogRqoAeBZvTyrXZbtVy+3+2NBDdQA1MBLHdQA1ACsa1CjSffChQtreRjWS05OpkePHpbuW0pKCv369SMzM5OoqKjqffHatXDddWDT1eMDAwOtHoLlbN3A5YLPPyfohx/gvPPgiivs97OgBiW4A9xWD8Fyek7QzwPY/HHwEzXwUAc1ADUAaxrUaNJ955131vY46k15E9uVK1eWOmLfmBiDB0PbtvDMMzB0qNXDqVdut5tt27aRlJRk27ess3WDlSthwgSMQ4d+focou/0sqEEJhulZvTzj/AzbHu3Wc4J+HsDmj4OfqIGHOqgBqAFY16DKx9VzcnJK/P+K/muMYmJiCA8Pt3oY5yY9HYYP9/zBIWIHK1d6HvOHDpXcbqefBTUQ+Zl+HkREpAGq8pHu6OhofvzxR1q2bElUVFSZbyhumiaGYVR5Gfbk5GTfqwxLly4lMDCQJ598khEjRvDAAw+wYsUKWrVqxaJFi7juuusA2L59O1OmTGHt2rU0bdqU/v37s2DBApo3bw54Xr2YN28eL7zwAocPH6ZTp07MmDGD4cOHs3//fvr16+fbH/ActV+yZEmp08sTEhIYO3Ys3333HW+//TbR0dE89thjjB071jf+//73v9x3333s3LmTCy+8kMcee4whQ4awadOmKr2d2scff8zEiRNJS0vjkksuOfczCEwTDAMmTICrr7bPqXQuF468PDh1yj77fDY7NnC54MEHPY/7s3l/FiZOhBtu8N8mLpfn572iBg3g+cCRl0coEJhXRJNTBXV+e4bbwJmXT5NTBZiOhnOkOzCviFD4+We1Luk5oSS7PCeIiEiDVOVJ92effUZMTAwAa9asqbUBLF26lKlTp/L111/z5ptvMn78eN59912GDBnC9OnTWbBgAbfffjsHDx6ksLCQK6+8kjFjxrBgwQLy8vKYNm0aN998M5999hkAc+fOZdmyZTz//PNccMEFfP7554wcOZIWLVpw2WWX8c477zBs2DB27dpFREQEISEh5Y5t/vz5zJ49m+nTp7NixQrGjx9P3759SUxMJCcnh8GDBzNw4ECWL1/OgQMHmDhxYpX3Oy0tjaFDh3L//fczduxYvvnmGx566KFKv66goICCgp//aC11ZoFpel7hj4ys8lgaOydwkdWDsJgalME0IS0N8/PP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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from ortools.sat.python import cp_model\n",
    "from collections import namedtuple\n",
    "\n",
    "\n",
    "# Function to convert time to index\n",
    "def t_to_idx(hour, minute):\n",
    "    return (hour - 8) * 12 + minute // 5\n",
    "\n",
    "\n",
    "# Function to convert index back to time\n",
    "def idx_to_time(index):\n",
    "    hour = 8 + index // 12\n",
    "    minute = (index % 12) * 5\n",
    "    return f\"{hour}:{minute:02d}\"\n",
    "\n",
    "\n",
    "# Define a namedtuple for start times and durations\n",
    "MeetingInfo = namedtuple(\"MeetingInfo\", [\"start_times\", \"duration\"])\n",
    "\n",
    "# Possible start times for meetings\n",
    "meetings = {\n",
    "    \"meeting_a\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=8, minute=0), t_to_idx(hour=12, minute=0)],\n",
    "            [t_to_idx(hour=16, minute=0), t_to_idx(hour=17, minute=0)],\n",
    "        ],\n",
    "        duration=24,  # 2 hours\n",
    "    ),\n",
    "    \"meeting_b\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=10, minute=0), t_to_idx(hour=12, minute=0)],\n",
    "        ],\n",
    "        duration=6 * 12,  # 6 hours\n",
    "    ),\n",
    "    \"meeting_c\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=16, minute=0), t_to_idx(hour=17, minute=0)],\n",
    "        ],\n",
    "        duration=6,  # 30 minutes\n",
    "    ),\n",
    "    \"meeting_d\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=8, minute=0), t_to_idx(hour=10, minute=0)],\n",
    "            [t_to_idx(hour=12, minute=0), t_to_idx(hour=14, minute=0)],\n",
    "        ],\n",
    "        duration=12,  # 1 hour\n",
    "    ),\n",
    "    \"meeting_e\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=10, minute=0), t_to_idx(hour=12, minute=0)],\n",
    "        ],\n",
    "        duration=24,  # 2 hours\n",
    "    ),\n",
    "    \"meeting_f\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=14, minute=0), t_to_idx(hour=15, minute=0)],\n",
    "        ],\n",
    "        duration=48,  # 4 hours\n",
    "    ),\n",
    "    \"meeting_g\": MeetingInfo(\n",
    "        start_times=[\n",
    "            [t_to_idx(hour=14, minute=0), t_to_idx(hour=16, minute=0)],\n",
    "        ],\n",
    "        duration=24,  # 2 hours\n",
    "    ),\n",
    "    # Additional meetings can be added here...\n",
    "}\n",
    "\n",
    "# Create a new CP-SAT model\n",
    "model = cp_model.CpModel()\n",
    "\n",
    "# Create start time variables for each meeting\n",
    "start_time_vars = {\n",
    "    meeting_name: model.new_int_var_from_domain(\n",
    "        cp_model.Domain.from_intervals(\n",
    "            [\n",
    "                [start, end + meetings[meeting_name].duration]\n",
    "                for start, end in meeting_info.start_times\n",
    "            ]\n",
    "        ),\n",
    "        f\"start_{meeting_name}\",\n",
    "    )\n",
    "    for meeting_name, meeting_info in meetings.items()\n",
    "}\n",
    "\n",
    "# Rooms\n",
    "rooms = [\"room_a\", \"room_b\"]\n",
    "\n",
    "room_vars = {\n",
    "    meeting_name: {\n",
    "        room: model.new_bool_var(f\"{meeting_name}_in_{room}\") for room in rooms\n",
    "    }\n",
    "    for meeting_name in meetings.keys()\n",
    "}\n",
    "\n",
    "for meeting, _room_vars in room_vars.items():\n",
    "    model.add_exactly_one(_room_vars.values())\n",
    "\n",
    "# Create interval variables for each meeting\n",
    "interval_vars = {\n",
    "    meeting_name: {\n",
    "        room: model.new_optional_fixed_size_interval_var(\n",
    "            start=start_time_vars[meeting_name],\n",
    "            size=meeting_info.duration,\n",
    "            is_present=room_vars[meeting_name][room],\n",
    "            name=f\"interval_{meeting_name}_in_{room}\",\n",
    "        )\n",
    "        for room in rooms\n",
    "    }\n",
    "    for meeting_name, meeting_info in meetings.items()\n",
    "}\n",
    "\n",
    "# Add the no-overlap constraint to the model\n",
    "for room in rooms:\n",
    "    model.add_no_overlap([interval_vars[meeting][room] for meeting in meetings])\n",
    "\n",
    "# Solve the model\n",
    "solver = cp_model.CpSolver()\n",
    "status = solver.solve(model)\n",
    "\n",
    "# Extract and print the solution\n",
    "schedule = {room: [] for room in rooms}\n",
    "if status in (cp_model.OPTIMAL, cp_model.FEASIBLE):\n",
    "    for meeting in meetings:\n",
    "        for room in rooms:\n",
    "            if solver.value(room_vars[meeting][room]):\n",
    "                start = solver.value(start_time_vars[meeting])\n",
    "                duration = meetings[meeting].duration\n",
    "                schedule[room].append((meeting, start, duration))\n",
    "                print(\n",
    "                    f\"{meeting} is in {room} from {idx_to_time(start)} to {idx_to_time(start + duration)}\"\n",
    "                )\n",
    "\n",
    "# Plotting\n",
    "fig, ax = plt.subplots(figsize=(10, 6))\n",
    "\n",
    "colors = {\"room_a\": \"skyblue\", \"room_b\": \"lightgreen\"}\n",
    "\n",
    "# Plot possible times as shaded areas\n",
    "for meeting, info in meetings.items():\n",
    "    for time_range in info.start_times:\n",
    "        start, end = time_range\n",
    "        ax.plot(\n",
    "            [start, end + info.duration],\n",
    "            [meeting, meeting],\n",
    "            color=\"red\",\n",
    "            linestyle=\"-\",\n",
    "            marker=\"o\",\n",
    "            label=\"Possible Times\"\n",
    "            if meeting == \"meeting_a\" and time_range == info.start_times[0]\n",
    "            else \"\",\n",
    "        )\n",
    "\n",
    "# Plot scheduled times for each room\n",
    "for room, meetings in schedule.items():\n",
    "    for meeting, start, duration in meetings:\n",
    "        ax.barh(\n",
    "            meeting,\n",
    "            duration,\n",
    "            left=start,\n",
    "            color=colors[room],\n",
    "            edgecolor=\"black\",\n",
    "            label=f\"Scheduled in {room}\" if meeting == \"meeting_a\" else \"\",\n",
    "        )\n",
    "\n",
    "# Customizing the plot\n",
    "ax.set_xlabel(\"Time\")\n",
    "ax.set_ylabel(\"Meetings\")\n",
    "ax.set_title(\"Meeting Schedule\")\n",
    "ax.grid(True, linestyle=\"--\", alpha=0.6)\n",
    "\n",
    "# To avoid duplicate legends\n",
    "handles, labels = plt.gca().get_legend_handles_labels()\n",
    "by_label = dict(zip(labels, handles))\n",
    "ax.legend(by_label.values(), by_label.keys(), loc=\"upper right\")\n",
    "\n",
    "\n",
    "# Convert x-axis to show actual time labels\n",
    "def time_ticks(x, pos):\n",
    "    hour, minute = idx_to_time(int(x)).split(\":\")\n",
    "    return f\"{hour}:{minute}\"\n",
    "\n",
    "\n",
    "ax.xaxis.set_major_formatter(plt.FuncFormatter(time_ticks))\n",
    "ax.xaxis.set_major_locator(plt.MultipleLocator(12))  # Every hour\n",
    "ax.xaxis.set_minor_locator(plt.MultipleLocator(3))  # Every 15 minutes\n",
    "\n",
    "plt.xticks(rotation=45)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "mo312",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
